// Copyright 2023 The Perses Authors
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

import buildQueryKey from './querykey-builder';

describe('buildQueryKey', () => {
  const testSuite = [
    {
      title: 'no names, no project',
      expectedQueryKey: ['variables'],
      parameters: {
        resource: 'variables',
      },
    },
    {
      title: 'name only',
      expectedQueryKey: ['variables', 'myVar'],
      parameters: {
        resource: 'variables',
        name: 'myVar',
      },
    },
    {
      title: 'project only',
      expectedQueryKey: ['variables', 'perses'],
      parameters: {
        resource: 'variables',
        parent: 'perses',
      },
    },
    {
      title: 'complete test',
      expectedQueryKey: ['variables', 'perses', 'myVar'],
      parameters: {
        resource: 'variables',
        parent: 'perses',
        name: 'myVar',
      },
    },
  ];

  testSuite.forEach(({ title, expectedQueryKey, parameters }) => {
    it(title, () => {
      expect(buildQueryKey(parameters)).toEqual(expectedQueryKey);
    });
  });
});
